package leetcode;


public class LeetCode24 {

    public static void main(String[] args) {
        ListNode a = new ListNode(1);
        ListNode b = new ListNode(2);
        ListNode c = new ListNode(3);
        ListNode d = new ListNode(4);

        a.next = b;
        b.next = c;
        c.next = d;

        LeetCode24 leetCode24 = new LeetCode24();
        leetCode24.swapPairs(a);
    }

    public ListNode swapPairs(ListNode head) {
        if (head == null || head.next == null)
            return head;
        ListNode first = new ListNode(-1), pre = first, p = head, q;
        while (p != null) {
            q = p.next;
            if (q != null) {
                p.next = q.next;
                pre.next = q;
                pre.next.next = p;
            } else {
                pre.next = p;
            }
            pre = p;
            p = pre.next;
        }
        return first.next;
    }

//    public ListNode swapPairs(ListNode head) {
//        if (head == null || head.next == null)
//            return head;
//        ListNode first = new ListNode(-1), p = first, q = head;
//        while (q != null && q.next != null) {
//            p.next = q.next;
//            p.next.next = q;
//            p = p.next;
//            q = q.next.next;
//        }
//        if (q != null)
//            p.next = q;
//        return first.next;
//    }
//------------------------------------------------------------------
}
